//
//  AQClosure.swift
//  AQAlgorithm
//
//  Created by zhangjikuan on 2020/9/21.
//  Copyright © 2020 hsgd. All rights reserved.
//

import UIKit

class AQClosure: NSObject {
    
    // swift 闭包
    
    func square(num: Int) -> Int {
        return num * num;
    }
    
    func test() {
    
        print(square(num: 23))
        print(type(of: fun1))
        
        print(fun1(4))
        
        let demo = {print("hello")}
        
        print(type(of: demo))
        
        print(sum(3,298))
        
        
        
        
        
    }
    
    // 闭包写法
    let fun1 = {
        (num: Int) -> Int in
        return num * num;
    }
    
    
    // 闭包表达式语法
    // 1. 由一对{} 开始和结束
    // 2. in 关键字把闭包分为两个部分： 参数与返回值，闭包体
    
    
    // 写一个闭包实现两数相加
    
    let sum = {
        (num1: Int, num2: Int) ->Int in
        return num1 + num2
    }
    
    //
    let con = {
        (s:Int)->Bool in
        return s>40
        
    }
    
    
    // swif 全局函数是一个有名字但不会捕获任何值的闭包
    /// 嵌套函数是一个有名字并可以捕获其闭包函数域内值的闭包
    /// 闭包表达式是一个利用轻量级语法缩写的可以捕获其上下文中变量名或常量值的匿名闭包
    
    

    

}
